# -*- coding: utf-8 -*-
"""
Created on Sat Aug 12 19:24:37 2023

@author: skunk69
"""

import json

chinese_name = u'抑郁自评量表'
english_name = 'Self-Rating Depression Scale'
abbreviation = 'SDS'
category = u'精神病学临床量表'

outline = u"""抑郁（depression）是一种感到无力应付外界压力而产生的消极情绪，并伴有厌恶、痛苦、羞愧、自卑等情绪体验。被抑郁情绪困扰的人常常表现为：情绪低落、思维迟缓、郁郁寡欢；丧失兴趣、缺乏活力，不愿社交，干什么都打不起精神，对生活缺乏信心，体验不到欢乐，食欲减退，失眠等。从外部观察可见表情冷漠，倦怠疲乏。性格内向孤僻，多疑多虑，不爱交际，生活中遇到意外打击、长期努力得不到报偿的人容易陷入抑郁状态。长期处于抑郁状态易导致抑郁症。
《抑郁自评量表》（Self-Rating Depression Scale，SDS）是由美国杜克大学医学院的William W. K. Zung于1965年编制的，是目前应用最广泛的抑郁自评量表之一，能够有效地反映抑郁状态的程度。"""

instruction = u"""请仔细阅读每一条，把题目的意思看明白，然后按照自己最近一周以来的实际情况，对下面的20个条目按“没有或很少时间”、“少部分时间”、“相当多时间”、“绝大部分时间或全部时间”四个等级评分。"""

with open('SDS.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for line in lines:
    key,value = line.strip().split('、',maxsplit=1)
    items[key] = value.strip()

reverse_items = [2,5,6,11,12,14,16,17,18,20]
scales = []
scales_items = []
factors = []
factors_scales = []
rating = [u'没有或很少时间',u'少部分时间',u'相当多时间',u'绝大部分或全部时间']
score_rules = list(range(1,5))

contents = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""《抑郁自评量表》属于一个自评量表。"""

reliability = u"""刘贤臣在一个大学生样本中，测得内部一致性系数为0.8624，间隔三周的重测系数为0.82。"""
validity = u"""研究发现，SDS与贝克抑郁问卷、Hamilton抑郁量表和MMPI的抑郁分量表之间有中等程度相关性。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""首先将反向题目反向计分，然后将所有条目得分相加得到总分。临床使用时可以采用抑郁严重指数（0.25~1.0）来反映被测者的抑郁程度。其中，抑郁严重指数=总分/最高分（80）。
抑郁程度判断方法：无抑郁（抑郁严重指数<0.5），轻度抑郁（0.5<抑郁严重指数<0.59），中度抑郁（0.6<抑郁严重指数<0.69），重度抑郁（抑郁严重指数>0.7）。
另外，标准总分=int（1.25X原始总分）。"""

applications = u"""全国量表协作组通过对正常人样本测量，得到SDS总分为33.46，其标准差为8.55，而标准分为41.88，标准差10.57。并且性别和年龄对SDS影响不大。按照上述常模，SDS的总分分界值为41分，标准分为53分。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)